// validationRules.ts

// 定义验证规则接口
interface ValidationRule {
  reg: RegExp;
  tips: string;
}

// 导出验证规则
export const validationRules = {
  // 手机号验证
  phone: {
    reg: /^1[3-9]\d{9}$/,
    tips: '手机号格式不正确，请输入11位有效的中国大陆手机号。',
  },

  // 密码验证
  password: {
    reg: /[\w!@#$%^&*]{6,18}/,
    tips: '密码由6-18位数字、字母、特殊字符组成。',
  },

  // 邮箱验证
  email: {
    reg: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
    tips: '邮箱格式不正确，请输入有效的邮箱地址。',
  },

  // 用户名验证
  username: {
    reg: /^[a-zA-Z0-9_]{4,16}$/,
    tips: '用户名由4-16位字母、数字或下划线组成。',
  },

  // 身份证号验证（18位）
  idCard: {
    reg: /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/,
    tips: '身份证号格式不正确，请输入18位有效的身份证号。',
  },

  // 邮政编码验证
  postalCode: {
    reg: /^[1-9]\d{5}$/,
    tips: '邮政编码格式不正确，请输入6位有效的邮政编码。',
  },

  // URL 验证
  url: {
    reg: /^(https?:\/\/)?([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?$/,
    tips: 'URL格式不正确，请输入有效的网址。',
  },

  // 日期验证（YYYY-MM-DD）
  date: {
    reg: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/,
    tips: '日期格式不正确，请输入有效的日期（YYYY-MM-DD）。',
  },

  // 数字验证（正整数）
  positiveInteger: {
    reg: /^[1-9]\d*$/,
    tips: '请输入正整数。',
  },

  // IP 地址验证
  ipAddress: {
    reg: /^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$/,
    tips: 'IP地址格式不正确，请输入有效的IPv4地址。',
  },

  // 银行卡号验证
  bankCard: {
    reg: /^[1-9]\d{12,18}$/,
    tips: '银行卡号格式不正确，请输入13-19位有效的银行卡号。',
  },
};
